using System;
using Microsoft.Xna.Framework;

namespace Phoenix.Xna.Framework.Graphics.Animation
{
    public interface IAnimationController : IBlendable
    {
        AnimationClip AnimationClip { get; }
        TimeSpan Time { get; set; }
        float Speed { get; set; }
        bool IsLooping { get; set; }
        PlaybackMode PlaybackMode { get; set; }
        InterpolationMode TranslationInterpolation { get; set; }
        InterpolationMode OrientationInterpolation { get; set; }
        InterpolationMode ScaleInterpolation { get; set; }
        bool IsFinished { get; }
        bool IsPlaying { get; }
        Matrix[] SkinnedBoneTransforms { get; }

        void StartClip(AnimationClip animationClip);
        void PlayClip(AnimationClip animationClip);
        void CrossFade(AnimationClip animationClip, TimeSpan fadeTime);
        void CrossFade(AnimationClip animationClip, TimeSpan fadeTime, InterpolationMode translationInterpolation,
            InterpolationMode orientationInterpolation, InterpolationMode scaleInterpolation);
        void Update(TimeSpan elapsedTime, Matrix parent);
    }
}